package com.seminario.rest;

import javax.jws.WebService;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import com.google.gson.Gson;
import com.seminario.dao.UsuarioDao;
import com.seminario.model.Usuario;

@WebService
@Path("/usuario")
public class UsuarioWS {
	
	Gson gson = new Gson();
	UsuarioDao usuarioDao = new UsuarioDao();
	

	@GET
	@Produces(MediaType.APPLICATION_JSON)
	public Response usuarioGET() {
		
		String cadenaJson = gson.toJson(usuarioDao.getAllUsers());      

		return Response.status(200).entity(cadenaJson).build();
	}

	@GET
	@Path("/{id}")
	@Produces(MediaType.APPLICATION_JSON)
	public Response usuarioIdGET(@PathParam("id") String idU ) {
		
		String cadenaJson = gson.toJson(usuarioDao.getUserById(idU));
		
		return Response.status(200).entity(cadenaJson).build();
	}

	@POST
	//@Consumes(MediaType.APPLICATION_JSON)
	public Response usuarioPOST(String json) {
		
		Usuario usuario;
		usuario = gson.fromJson(json, Usuario.class);
		
		usuarioDao.agregarUsuario(usuario);

		return Response.status(200).entity("Agregado: " + json).build();
	}

	@PUT
	//@Consumes(MediaType.APPLICATION_JSON)
	public Response usuarioPUT(String json) {
		
		Usuario usuario;
		usuario = gson.fromJson(json, Usuario.class);
		
		usuarioDao.actualizarUsuario(usuario);
		
		return Response.status(200).entity(" ").build();
	}
	
	@DELETE
	//@Consumes(MediaType.APPLICATION_JSON)
	public Response usuarioDELETE() {
		
		usuarioDao.borrarUsuario("ID");

		return Response.status(200).entity(" ").build();
	}
	
	
}
